Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Правда или действие #8

Merged

Conversation

Suninall
Copy link
Contributor

@Suninall Suninall commented Dec 24, 2024

@keksobot keksobot changed the title Валидация формы Правда или действие Dec 24, 2024
@Suninall
Copy link
Contributor Author

Я еще не все сделала, но хочу отправить, чтобы если что сарзу переделать уже сделанный блок

@Suninall
Copy link
Contributor Author

Вот теперь все добавила)

keksobot pushed a commit that referenced this pull request Dec 25, 2024
@keksobot
Copy link
Contributor

♻️ Я собрал ваш пулреквест. Посмотреть можно здесь.

index.html Outdated

<!-- Изначальное состояние поля для загрузки изображения -->
<fieldset class="img-upload__start">
<input type="file" id="upload-file" class="img-upload__input visually-hidden" name="filename" required>
<input type="file" id="upload-file" class="img-upload__input visually-hidden" name="filename" action="https://29.javascript.htmlacademy.pro/kekstagram" method="post" enctype="multipart/form-data" accept="image/png, image/jpeg" required>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

За accept + 👍🏻 можно указать "image/*", чтобы вообще все форматы фото принимались. А вот остальные атрибуты здесь лишние

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Исправила

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻

js/photo-load.js Outdated
@@ -0,0 +1,21 @@
const FILE_TYPES = [

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

раз ты тут допом проверяешь тип, то с "image/*" могут быть проблемы

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻

js/photo-load.js Outdated
const file = imgInput.files[0];
const fileName = file.name.toLowerCase();
const matches = FILE_TYPES.some((it) => fileName.endsWith(it));
console.log(matches);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Лишнее)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

если ты про console.log, то я уже убрала

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻

});
const regexp = /^#[^\s#]+$/i;

imgInput.addEventListener("change", (evt) => {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Почему нельзя все это сделать в одном событии? Сейчас неочевидна логика работы(

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Надеюсь правильно поняла, теперь у меня в слушателе для input вызываются слушатели на другие кнопки

}

});
function closeForm(){

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

На закрытие нужно обнулять состояния и скидывать загруженное фото. Сейчас странно работает. Если закрыть через кнопку, то можно загрузить тоже фото, если закрыть через esc, тоже фото нельзя загрузить - оно не сбрасывается из инпута скорее всего.

Плюс слушатели закрытия на закрытие нужно удалять

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Теперь удаляю форму и слушатель на закрытие

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻


function validateHastags (value) {
const hashtags = value.trim().split(" ");
if (value.trim() === "") {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

можно value.trim() вынести в переменную выше, так как дублируется код.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

сделала

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻

function closeOutside(evt){
if (!successInner.contains(evt.target)){
closeSuccess();
imgOverlay.classList.add("hidden");

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

в closeSuccess() уже есть этот код

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

убрала

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻

if(isEscapeKey(evt)) {
evt.preventDefault();
closeSuccess();
closeForm();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Почему по клику форму не закрывать тогда? И вообще нужно ли это делать?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, действительно не нужно, убрала вызов этой функции

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻

errorButton.addEventListener("click", closeError);
document.addEventListener("keydown", closeErrorEscape);
document.addEventListener("click", closeOutside);
document.removeEventListener("click",closeForm);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Может без слушателя лучше, а внутрь других слушателей сложить?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻

if(isEscapeKey(evt)) {
evt.preventDefault();
closeError();
imgOverlay.classList.remove("hidden");

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В других обработчиках нет этого(

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В других обработчиках нет этого, так как при нажатии на esc без этой строчки с убиранием класса hidden, у меня закрывалось и модальное окно с фотографией, а в других случаях такого не было

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻

@Danila100
Copy link

Danila100 commented Dec 25, 2024

Пишу итог по валидациям в одно месте:
Хэш-теги:

  • хэш-тег начинается с символа # (решётка);
  • хэш-теги нечувствительны к регистру: #ХэшТег и #хэштег считаются одним и тем же тегом; ( #ХэшТег #хэштег проходит валидацию)
  • хэш-теги разделяются пробелами;
  • один и тот же хэш-тег не может быть использован дважды;
  • хэш-теги необязательны.

Комментарий:

  • комментарий не обязателен;
  • длина комментария не может составлять больше 140 символов;

@Suninall
Copy link
Contributor Author

А разве если хэш-теги нечувствительны к регистру это не значит, что #ХэшТег #хэштег это одно и то же, просто в этом случае форма не должна проходить валидацию, так как 2 хэш-тега повторяются

@keksobot
Copy link
Contributor

♻️ Я собрал ваш пулреквест. Посмотреть можно здесь.

keksobot pushed a commit that referenced this pull request Dec 25, 2024
@keksobot keksobot merged commit 8c3a095 into htmlacademy-univer-javascript-1:master Dec 25, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants